0%

flutter provider基础使用

main.dart

废话不多说 直接上代码 😃

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import 'package:flutter/material.dart';
import 'package:flutter_demo/provider/main_provider.dart';
import 'package:provider/provider.dart';

void main() {
runApp(MaterialApp(
title: 'demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
//定义作用区间 只绘制顶层home
home: MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => MainProvider()),
],
child: Home(),
),
));
}

class Home extends StatefulWidget {
@override
_HomeState createState() => new _HomeState();
}

class _HomeState extends State<Home> {
// int curNum = 0;
int curNum;

@override
void initState() {
super.initState();
//TODO
}

void add() {
setState(() {
curNum += 1;
});
//TODO
}

void minus() {
setState(() {
curNum -= 1;
});
//TODO
}

@override
Widget build(BuildContext context) {
//定义provider 实例化
MainProvider provider = Provider.of<MainProvider>(context);
curNum = provider.curNum;
return new Scaffold(
appBar: new AppBar(
title: new Text('demo'),
),
body: Column(
children: <Widget>[
Add(),
// Add(
// add: add,
// ),
Container(
child: Text(
'$curNum',
style: TextStyle(fontSize: 30),
),
),
Minus(),
// Minus(
// minus: minus,
// ),
],
),
);
}
}

class Minus extends StatelessWidget {
const Minus({
Key key,
// this.minus,
}) : super(key: key);
// final int curNum;
// final VoidCallback minus;
@override
Widget build(BuildContext context) {
MainProvider provider = Provider.of<MainProvider>(context);
return Container(
child: Container(
child: FlatButton(
child: Text(
'-',
style: TextStyle(fontSize: 30),
),
onPressed: () {
provider.minus();
},
),
),
);
}
}

class Add extends StatelessWidget {
const Add({
Key key,
// this.add,
}) : super(key: key);
// final int curNum;
// final VoidCallback add;
@override
Widget build(BuildContext context) {
MainProvider provider = Provider.of<MainProvider>(context);
return Container(
child: Container(
child: FlatButton(
child: Text(
'+',
style: TextStyle(fontSize: 30),
),
onPressed: () {
provider.add();
},
),
),
);
}
}

main_provider.dart

废话不多说 直接上代码 😃

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import 'package:flutter/material.dart';

//定义作用区间 状态管理与界面抽离 祖先 父 子 孙子 统一操作数据
class MainProvider extends ChangeNotifier {
int curNum = 0;
add() {
curNum += 1;
notifyListeners();
}

minus() {
curNum -= 1;
notifyListeners();
}
}

Flutter 常用插件
| 插件 | 作用 |
| ———————————————- | ——— |
| fluwx | 微信 SDK |
| tobias | 支付宝 SDK |
| alipay_me | 支付宝 SDK |
| image_picker | 拍照和选图片 |
| flutter_jpush | 极光推送 |
| dio | HTTP 网络请求库 |
| FlutterToast | Toast |
| audioplayers | 音频播放 |
| flutter_easyrefresh | 下拉刷新 |
| flutter_contacts | 管理联系人 |
| font_awesome_flutter | Awesome 图标库 |
| flutter_svg | svg |
| flutter_spinkit | loading 动画 |
| flutter_shimmer| Skeleton 页面加载占位符 |
| encrypt | 加密解密 |
| flutter_udid | udid |
| flutter_swiper | 轮播图 |
| flutter_carousel_slider | 轮播图 |
| RealRichText | 富文本 |
| auto_size_text | 自动调节大小的文本 |
| Animated-Text-Kit | 带动画的文本 |
| Flutter TypeAhead | 带提示的输入框 |
| flutter_screenutil | 自适应多分辨率 |
| city_pickers | 中国城市三级联动选择器 |
| flutter_datetime_picker | 时间选择器 |
| photo_view | 图片预览 |
| flutter_full_pdf_viewer | 多张图片选择器 |
| multi_image_picker | int |
| qr.flutter| 二维码生成器 |
| fast_qr_reader_view | 二维码识别器 |
| flushbar | Snackbar 效果 |
| pin_code_text_field | pin 输入框 |
| RangeSlider | 范围选择器 |
| flutter_slidable | 可以左右滑动的 listitem |
| flutter_list_drag_and_drop | 可以拖拽的 list |
| tinder_cards | 可以拖拽的 card |
| amap_base_flutter | 高德地图 |
| flutter_daydart | 时间处理库 |
| cached_network_image | 缓存图片 |
| flutter_advanced_networkimage | 高级缓存图片 |
| image_jpeg | 转 jpeg 缩放压缩 |
| photo | 选择图像,支持多选 |
| flutter-provide | 数据状态管理 |
| common_utils | 常用工具 |
| flukit | flutter 常用 ui 封装 |
| flutter_sticky_header | 顶头的列表 |
| sticky_headers | 顶头的列表 |
| flutter_staggered_grid_view | 瀑布流布局|
| flutter_parallax | 视差布局 |
| flutter_calendar_carousel | 日历 |
| flutter_appavailability | 检测是否安装了其他 app |